Skip to content

web: surface OIDC session expiry instead of stalling; recover kickoff plan request - #4

Merged
reoring merged 1 commit into
mainfrom
fix/session-expiry-visible
Nov 9, 2026
Merged

reoring merged 1 commit into
mainfrom
fix/session-expiry-visible

Conversation

@reoring

@reoring reoring commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

When the edge access session expires mid-build, both transports followed the
IAM redirect (or saw a 401), then returned a never-settling promise after
assign('/'). BuildPage rendered only initial-load errors, so the cached
running turn kept showing 「考えています」 indefinitely; on Craftsman this
hid a completed kickoff for 41 minutes (draft-41cb28ef, 01:56Z→02:37Z).

  • One session-expiry detector for Platform proxy and Console API: 401,
    manual/opaque/followed redirects, HTML login bodies → settled
    SESSION_EXPIRED error, no retries, latch blocks further requests.
  • Root-level boundary unmounts polling and shows 「セッションが切れました。
    再サインインしてください」 with 「再サインイン」 to the same draft URL.
  • Kickoff recovery: a succeeded kickoff turn with no plan requests the
    generation from server history (idempotent key), and an idle unplanned
    draft offers 「この内容で提案して」 as the primary action instead of
    showing nothing.
  • Active draft polling continues in background tabs.

… plan request

When the edge access session expires mid-build, both transports followed the
IAM redirect (or saw a 401), then returned a never-settling promise after
assign('/'). BuildPage rendered only initial-load errors, so the cached
running turn kept showing 「考えています」 indefinitely; on Craftsman this
hid a completed kickoff for 41 minutes (draft-41cb28ef, 01:56Z→02:37Z).

- One session-expiry detector for Platform proxy and Console API: 401,
  manual/opaque/followed redirects, HTML login bodies → settled
  SESSION_EXPIRED error, no retries, latch blocks further requests.
- Root-level boundary unmounts polling and shows 「セッションが切れました。
  再サインインしてください」 with 「再サインイン」 to the same draft URL.
- Kickoff recovery: a succeeded kickoff turn with no plan requests the
  generation from server history (idempotent key), and an idle unplanned
  draft offers 「この内容で提案して」 as the primary action instead of
  showing nothing.
- Active draft polling continues in background tabs.
@reoring
reoring merged commit e04ae1e into main Nov 9, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant